package agenda;

import java.io.Serializable;

import javax.swing.Icon;
import javax.swing.ImageIcon;

/**
 * Classe Usuario
 * 
 * @author Célio Roberto, Ricardo Magno, Wesley Brenno
 * 
 */
public class Usuario implements Serializable {
	private String nome, descricaoUsuario, dataDeNascimento, endereco, email,
			telefone;
	private Icon fotoUsuario;

	/**
	 * Construtor da Clase Usuario
	 * 
	 * @param nome
	 *            Nome do Usuario
	 * @param descricaoUsuario
	 *            Descrição do Usuario
	 * @param email
	 *            E-mail do Usuario
	 * @param telefone
	 *            Telefone do Usuario
	 * @param endereco
	 *            Endereco do Usuario
	 * @param dataDeNascimento
	 *            Data de Nascimento do Usuario
	 */
	public Usuario(String nome, String descricaoUsuario, String email,
			String telefone, String endereco, String dataDeNascimento,Icon fotoUsuario) {
		this.nome = nome;
		this.descricaoUsuario = descricaoUsuario;
		this.email = email;
		this.telefone = telefone;
		this.endereco = endereco;
		this.dataDeNascimento = dataDeNascimento;
		this.fotoUsuario = fotoUsuario;
		
	}

	/**
	 * Altera o Nome do Usuario
	 * 
	 * @param novoNome
	 *            O novo nome do Usuario
	 */
	public void setNome(String novoNome) {
		this.nome = novoNome;
	}

	/**
	 * Retorna o nome do Usuario
	 * 
	 * @return o nome do Usuario
	 */
	public String getNome() {
		return this.nome;
	}

	/**
	 * Retorna O E-mail do Usuario
	 * 
	 * @return O E-mail do Usuario
	 */
	public String getEmail() {
		return email;
	}

	/**
	 * Altera o e-mail do Usuario
	 * 
	 * @param novoEmail
	 *            Novo e-mail do Usuario
	 */
	public void setEmail(String novoEmail) {
		this.email = novoEmail;
	}

	/**
	 * Retorna o Telefone do Usuario
	 * 
	 * @return Telefone do Usuario
	 */
	public String getTelefone() {
		return telefone;
	}

	/**
	 * Altera o Telefone do Usuario
	 * 
	 * @param novoTelefone
	 *            Novo Telefone
	 */
	public void setTelefone(String novoTelefone) {
		this.telefone = novoTelefone;
	}

	/**
	 * Retorna o Endereço do Usuario
	 * 
	 * @return Endereço do Usuario
	 */
	public String getEndereco() {
		return endereco;
	}
	
	/**
	 * Altera a foto do Usuario
	 * @param foto
	 * 		Nova foto do Usuairo
	 */
	public void setFotoUsuairo(Icon foto){
		this.fotoUsuario = foto;
	}
	
	/**
	 * Pega a foto do Usuario
	 * @return
	 * 		Foto do Usuario
	 */
	public Icon getFotoUsuario(){
		return this.fotoUsuario;
	}
	/**
	 * Altera o enderco do Usuario
	 * 
	 * @param endereco
	 *            Novo endereco
	 */
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	/**
	 * Altera a Descrição do Usuario
	 * 
	 * @param descricaoUsuario
	 *            Nova descrição do Usuario
	 */
	public void setDescricaoUsuario(String descricaoUsuario) {
		this.descricaoUsuario = descricaoUsuario;
	}

	/**
	 * Retorna a Descrição do Usuario
	 * 
	 * @return Descrição do Usuario
	 */
	public String getDescricaoUsuario() {
		return this.descricaoUsuario;
	}

	/**
	 * Retorna a Data de Nascimento do Usuario
	 * 
	 * @return Data de Nascimento do Usuario
	 */
	public String getDataDeNascimento() {
		return this.dataDeNascimento;
	}

	/**
	 * Altera a Data de Nascimento do Usuario
	 * 
	 * @param NovaData
	 *            Nova Data de Nasccimento
	 */
	public void setDataDeNascimento(String NovaData) {
		this.dataDeNascimento = NovaData;
	}

	/**
	 * Retorna uma representação do Usuario em String
	 */
	public String toString() {
		return "Perfil Usuario:\nNome: " + getNome() + "\nEmail: " + getEmail()
				+ "\nDescricao: " + getDescricaoUsuario() + "\nTelefone: "
				+ getTelefone() + "\nEndereço: " + getEndereco()
				+ "\nData de nascimento: " + getDataDeNascimento();
	}
}
/*
 * Caso1: Visualizar e atualizar perfil do usuário O sistema possui uma
 * descrição de seu usuário, com nome, descrição e email. Quando o sistema
 * inicia a primeira vez, o perfil está vazio. O usuário pode visualizar seu
 * perfil no sistema e alterá-lo, salvando os resultados. Da próxima vez que o
 * sistema inicia, as informações salvas são carregadas.
 */